package com.bilibili.dubbo.api.db;

import com.bilibili.model.db.UserInfo;
import com.bilibili.model.mongo.UserLike;
import com.bilibili.model.vo.PageResult;
import com.bilibili.model.vo.UserInfoVoLike;

import java.util.List;
import java.util.Map;

/**
 * @author HuangRongFu
 * 2021/11/17 星期三11:38 上午
 */


public interface UserInfoApi {

    /**
     * 完善用户信息
     *
     * @params: userInfo
     * @Return:
     */
    void add(UserInfo userInfo);

    /**
     * 更新用户信息
     *
     * @params: userInfo
     */
    void update(UserInfo userInfo);

    /**
     * 查询用户详细信息
     *
     * @params: userId
     * @Return: UserInfo
     */
    UserInfo findById(Long userId);

    /**
     * 条件批量id查询
     *
     * @return
     * @param: userIds
     * @param: userInfoCondition
     */
    Map<Long, UserInfo> findByIds(List<Long> userIds, UserInfo userInfoCondition);

    /**
     * 通过用户id批量查询
     *
     * @param: ids
     * @Return: List
     */
    List<UserInfo> findByBatchIds(List<Long> ids);


    /**
     * 分页查询
     * @param page
     * @param pageSize
     * @Return: PageResult
     */
    PageResult findPage(Long page, Long pageSize);


    /**
     *  互相喜欢 喜欢用户
     * @param page
     * @param pageSize
     * @param ids
     * @param type
     * @return
     */
    PageResult<UserInfoVoLike> findFansPage(Long page, Long pageSize, List<Long> ids, Integer type);

}
